def funA(fn):
    print('A')
    fn()
    return 'crazy'


@funA
def funB():
    print('B')


print(funB)



def foo(fn):
    def bar(*args):
        print("========1==========", args)
        n = args[0]
        print("=====2===============", n * (n - 1))
        print(fn.__name__)
        fn(n * (n - 1))
        print("*" * 15)
        return fn(n * (n - 1))
    return bar


@foo
def my_test(a):
    print("===my_test======", a)


print("#" * 30)
print(my_test)
print("############################################")
my_test(10)
print("############################################")
my_test(6, 5)

